Ứng dụng của thuật toán di truyền vào kết quả thực nghiệm 66 

Một phần của tài liệu Đánh giá hiệu quả của giải thuật di truyền giải bài toán cây khung truyền thông tối ưu với các kỹ thuật mã hóa cây (Trang 67)

M ục đích nghiên cứu, đố it ượ ng, phạm vi nghiên cứ u 12 

3.3Ứng dụng của thuật toán di truyền vào kết quả thực nghiệm 66 

3.3.1. Chọn lọc cá thể

Phương pháp chọn lọc theo vòng quay Roulette được sử dụng để chọn ra cá thể đem đi lai ghép.

Hình 3.7- Mô tả phương pháp chọn lọc theo vòng quay Roulette

Độ thích nghi của mỗi cá thể sẽ được thể hiện một phần trong hình tròn của bánh xe Roulette. Sau đó ta thực hiện bằng cách quay bánh xe Roulette, mỗi lần quay sẽ chọn được một cá thể từ quần thể hiện hành để làm cha mẹ hay cho vào quần thể

mới. Cách lựa chọn này phù hợp với quy luật tự nhiên là các cá thể tốt sẽ tồn tại và thông thường sẽ được chọn để sinh sản, di truyền các tính trạng tốt cho các thế hệ về

sau.

Các bước cụ thểđược mô tả như sau:

Bước 1.Tính tổng độ thích nghi của các cá thể trong quần thể. Ta gọi tổng này là S. Cá thể có độ thích nghi thấp nhất sẽ có ít khả năng được lựa ấ Cá thể có độ thích nghi cao sẽ có khả năng lựa chọn cao

67

Bước 2.Phát sinh một số ngẫu nhiên r trong khoảng [0…S].

Bước 3. Duyệt lại toàn bộ quần thể, tính tổng độ thích nghi của các cá thể bắt đầu từ nhiễm sắc thểđầu tiên, ta gọi là s. Khi nào s>r thì ta dừng với nhiễm sắc thể hiện tại. Chọn nhiễm sắc thể hiện tại.

3.3.2 Toán tử lai ghép

3.3.2.1 Lai ghép một điểm cắt (One-point Crossover)

+ Phương pháp này tiến hành như sau:

ƒ Chọn ngẫu nhiên 1 điểm cắt trên nhiễm sắc thể cha mẹ.

ƒ Mỗi cá thể cha mẹ khi đó sẽ bị phân chia thành 2 phần. Khi đó mỗi cá thể con sẽ được tạo ra bằng cách ghép chéo 2 phần của cá thể cha mẹ.

Hình 3.8- Minh họa phương pháp lai ghép một điểm cắt.

3.3.2.2. Lai ghép đồng bộ (Uniform Crossover)

Để thực hiện lai ghép đồng bộ ta thực hiện các bước sau:

ƒ Sinh ngẫu nhiên một mặt nạ ghép gồm một chuỗi bit 0 hoặc 1 có độ dài bằng cá thể cha mẹ.

ƒ Duyệt từng bit trên chuỗi mặt nạ. Xét vị trí thứ k, nếu bit trên mặt nạ có giá trị là 0, ta gán giá trị tại vị trí k của cha mẹ1 cho con1 và gián giá trị của cha mẹ2 tại vị trí k

Cha mẹ1

Cha mẹ2 Con1 Con2

68

cho con2. Ngược lại nếu bit trên mặt nạ có giá trị là 1 ta sẽ gán theo cách đảo lại, tức là giá trị tại vị trí k của cha mẹ1 sẽ gán cho con2 và giá trị của cha mẹ2 tại vị trí k sẽ gán cho con1.

Hình 3.9 - Minh họa phương pháp lai ghép đồng bộ.

3.3.3. Toán tửđột biến

3.3.3.1 Đột biến thay đổi giá trị

Đây là kỹ thuật đột biến đơn giản nhất. Được tiến hành như sau:

ƒ Chọn một (hoặc một số) vị trí ngẫu nhiên để tiến hành thay đổi giá trị. Ví dụ:

(adsbygoogle = window.adsbygoogle || []).push({});

Hình 3.10 - Chỉ ra phép đột biến tại vị trí thứ 4.

3.3.3.2. Đột biến đảo đoạn

ƒ Chọn hai vị trí ngẫu nhiên xác định đầu và cuối của đoạn gene sẽđảo. ƒ Xếp lại các gene trong đoạn đó theo trật tự ngược với trật tự ban đầu. Ví dụ: Cha mẹ1 Cha mẹ2 Mặt nạ Con1 Con2 Cha mẹ Con

69 Trước đột biến: 1 2 4 6 7 5 3 2.

Chọn vị trí của đoạn là 2 và 4. Sau đột biến: 1 6 4 2 7 5 3 2.

3.4. Mô hình lai ghép đề xuất

Trong thuật toán di truyền, trải qua mỗi thế hệ, thuật toán sẽ đi tìm kiếm trong quần thể mới, lời giải có tiềm năng của bài toán. Nhưng theo thuật toán di truyền mỗi cá thể ở thế hệ sau nó không có một cơ chế cho phép lưu trữ các trạng thái (hoặc các gen) tốt trong quá khứ mà nó đã tìm ra ( có nghĩa là có trường hợp cá thế tốt nhưng không được giữ lại). Cho nên quần thể sẽ phải trãi qua nhiều thế hơn và tốn nhiều thời gian để đi tìm lại gen tốt đó. Do đó để khắc phục nhược điểm này, một phương pháp lưu trữ và sử dụng các thông tin tốt trong quá khứ sẽđược đề xuất trong thuật toán

Trong thuật toán đề xuất mỗi cá thể có thêm một khả năng lưu trữ các thông tin (gen) tốt trong quá khứ của nó, trải qua mỗi thế hệ thông tin tốt trong quá khứ này lại

được cập nhật lại. Việc kết hợp thông tin tốt trong quá khứ để tạo ra thế hệ mới được thể hiện trong toán tử lai ghép. Khi lai ghép giữa 2 cha mẹ, thì chúng ta sử dụng thông tin là giá trị các gen của cha mẹ hiện tại và sử cả các gen tốt nhất trong quá khứ của chúng.

Cho cá thể và được lựa chọn từ quần thể, , lần lượt là giá trị tốt nhất mà cá thể , đã tìm được cho tới thời điểm hiện tại. Chúng ta thực hiện lai ghép như sau:

70

Kí hiệu trong (4) và (5) đại diện cho một toán tử lai ghép (lai ghép một điểm cắt, hoặc lai ghép chéo) thông thường trong thuật toán di truyền. Với và tương ứng là con của hai cá thể cha mẹ và .

Sau khi một toán tử lai ghép (4) được thực hiện, có hai con được sinh ra, một trong hai cá thể con sẽđược lựa chọn để thay thế cho cha mẹ của nó. Thực nghiệm cho thấy nếu sử dụng đồng thời cả hai giá trị và cho quá trình lai ghép thì tốc độ hội tụ của thuật toán sẽ nhanh hơn. Do đó cả quần thể sẽ nhanh chóng rơi vào cực trị địa phương. Do đó chúng ta chỉ sử dụng một giá trị trong phép lai ghép. Việc lựa chọn mô hình lai ghép này trong giải thuật di truyền cũng không nằm ngoài mục đích cân bằng giữa tốc độ hội tụ và việc tìm ra được lời giải tốt cho bài toán tối ưu.

3.5. Giải thuật di truyền đề xuất:

1. Procedure GA

2. INIT(Pop) // Cài đặt quần thể mẫu 3. với mỗi cá thể

4. Update // GBest là giá trị tốt nhất của quần thể 5. While do

6. For to

7. = RouletteSelection(Pop) // Lựa chọn cá thể theo vòng quay Roulette 8. = RandomSelection(Pop) // Lựa chọn cá thể ngẫu nhiên 9. 10. 11. Update // 12.End For 13. For to

71 14. = RandomSelection(Pop) // lấy cá thể ngẫu nhiên 15. // đột biến cá thể Xj 16.Update // 17.End For 18. Update 19.End While 20.Return 21.End Procedure

Ta sẽ gọi thuật toán vừa mô tả là thuật toán GA. Ban đầu các cá thể trong quần thể được khởi tạo một cách ngẫu nhiên. Giá trị tốt nhất của các cá thể được khởi tạo chính là giá trị ban đầu của cá thể đó. Và giá trị ban đầu sẽ là giá trị cá thể tốt nhất trong quần thể vừa được tạo ra. Thuật toán sẽ tiến hành lặp lại các bước từ 6 đến 18 cho đến khi điều kiện dừng được thỏa mãn. Có nhiều cách để kết thúc thuật toán, như là sau một số thế hệ (lần lặp) xác định, hoặc sau một số thế hệ liên tiếp mà giá trị

không được cải thiện.

Bước , là thực hiện quá trình lai ghép các cá thể, ởđây số lượng cá thểđược

đem lai ghép là m (m được tính bằng tỉ lệ lai ghép nhân với kích thước quần thể). Các cá thể được chọn để lai ghép theo hai cách, cá thể cha mẹ thứ nhất được chọn theo phương pháp bánh xe Roulette và cá thể cha mẹ thứ 2 được lựa chọn ngẫu nhiên. Mục

đích của việc dùng đồng thời 2 phương pháp lựa chọn này là để tăng sự đa dạng cho kiểu gen của cá thể cha mẹ, tránh sự suy thoái về kiểu gen. Bởi vì các cá thể tốt nhất trong quần thể ban đầu thường có chứa một số gen giống nhau, nếu chỉ chọn các cá thể

tốt nhất mà đem lai ghép với nhau thì thường nó làm giảm sựđa dạng trong không gian gen của quần thể, điều này làm tăng khả năng của thuật toán hội tụ tại một cực trị địa phương.

72

Các bước từ là thực hiện quá trình đột biến trên quần thể, toán tửđột biến đảo

đoạn được áp dụng. Cũng giống như với quá trình lai ghép, số lượng cá thểđược đột biến là ( k được tính bằng tỉ lệ đột biến nhân với số lượng quần thể). Ở đây các cá thể bị đột biến sẽđược lựa chọn một cách ngẫu nhiên. Việc đột biến các cá thể với hi vọng là làm xuất hiện những kiểu gen mới tốt hơn trong quần thể, giảm khả năng thuật toán hội tụ tại cực trị địa phương của bài toán. Kết thúc thuật toán thì giá trị tốt nhất tìm được bởi quần thể sẽđược trả về.

Giải thuật GA ở trên dựa trên mô hình giải thuật di truyền chuẩn kết hợp với sự cải tiến trong quá trình lai ghép. Trong thuật toán ta không đi lai ghép trực tiếp hai cá thể (adsbygoogle = window.adsbygoogle || []).push({});

cha mẹ sau khi tìm được. Ở bước 9 ta lai ghép cha mẹ với giá trị ta tìm được con , ở bước 10 ta lai gép với ta thu được con . Trong đó với mỗi cá thểXi

Yj luôn đi kèm với hai giá trị đó là PXiPYi. Hai giá trị này chính là thông tin về vị

trí tốt nhất mà XjYj đạt được trong quá khứ. Các thông tin được cập nhật lại khi có sự thay đổi nào của các cá thể bao gồm quá trình lai ghép và đột biến.

73

CHƯƠNG 4

KẾT QUẢ THỰC NGHIỆM

Dựa trên thuật toán GA ở chương 3, chương này sẽ trình bày kết quả về các cài

đặt thử nghiệm thuật toán di truyền giải bài toán OCST.

4.1. Cài đặt thử nghiệm

Thuật toán được cài đặt trên ngôn ngữ lập trình Visual Studio 2008. Chương trình được chạy thử nghiệm trên máy tính Core2 Duo, Ram 1GB, cài hệ điều hành Windows XP để đánh giá hiệu quả của thuật toán di truyền trên các phương pháp mã hóa cây khác nhau.

4.1.1. Dữ liệu thực nghiệm

Thử nghiệm được tiến hành thực hiện GA trên 8 bộ test chuẩn mà thường được dùng khi so sánh hiệu quả của các thuật toán giải bài toán OCST. Bộ dữ liệu này đã

được F. Rothlauf cung cấp trong [2].

Mục đích chính của thử nghiệm này là để đánh giá hiệu quả của thuật toán di truyền trên các kỹ thuật mã hóa cây khác nhau.

Sau đây là mô tả các bộ test chuẩn:

ƒ Các bộ test Palmer6, Palmer12, Palmer24 được Palmer đưa ra vào năm 1994. Trong các bộ test này, giá trị nhu cầu (demand) ru,v giữa các đỉnh tỉ lệ nghịch với khoảng cách giữa chúng. Đồ thị trong bộ test gồm các nút tương ứng với vị trí các thành phố của Mỹ.

74

ƒ Berry cùng một số tác giả khác giới thiệu 2 bộ test cho bài toán OCST. 1 bộ có kích thước 6 đỉnh và 1 bộ kích thước 35 đỉnh.

ƒ Các bộ test này được đa số các giải thuật meta-heuristic đề xuất gần đây sử dụng

đểđánh giá hiệu năng của thuật toán.

Dưới đây là bảng liệt kê các bộ test chuẩn, kích thước bộ test và chi phí của cây khung tốt nhất đã tìm được tương ứng với những bài toán này. Các bộ test này đều có

đầu vào là một đồ thịđầy đủ. Kích thước bộ test ởđây chỉ ra sốđỉnh của đồ thị.

Tên Kích thước Giá trị tốt nhất đã biết Berry6 6 534 Berry35 35 16915 Palmer6 6 693180 Palmer12 12 3428509 Palmer24 24 1086656 Raidl10 10 53674 Raidl20 20 157570 Raidl50 50 806864 Bảng 4.1 - Các bộ test chuẩn

4.1.2. Các tham số cho các thử nghiệm

Tất cả các bộ test chuẩn được chạy với tham sốđầu vào như sau: ƒ Kích thước quần thể: 100 cá thể.

ƒ Điều kiện dừng giải thuật: tùy theo kích thước đồ thị và do ta nhập vào . ƒ Xác suất đột biến: 6%.

75

ƒ Mỗi bộ test được thực hiện trên cả 5 phương pháp mã hóa Prufer, LB, NB, LNB,

NetKeys. Như vậy với mỗi bộ test ta có 5 cấu hình.

ƒ Mỗi cấu hình được chạy 20 lần, và giá trị trung bình được sử dụng để so sánh. (adsbygoogle = window.adsbygoogle || []).push({});

4.2. Kết quả thực nghiệm

Dưới đây là bảng thống kê kết quả chạy trên các bộ test chuẩn với các thông số

sau:

ƒ Best: Giá của cây khung tốt nhất mà giải thuật tìm được trên 20 lần chạy.

ƒ Best known: Giá của cây khung tốt nhất đã tìm được bởi giải thuật chính xác và một số giải thuật khác trước đây.

ƒ %: Được tính theo công thức sau: %: (Best – Best known)/Best known * 100%. ƒ Avg: Giá trị trung bình giá của cây khung được tính trên 20 lần chạy.

ƒ Gen: Số thế hệ chạy cho mỗi dữ liệu đầu vào.

ƒ Time: Gọi T (giây) là thời gian tối thiểu để chương trình chạy được G thế hệ thì

Time được tính bằng trung bình của T trên 20 lần chạy. ƒ Std:là độ lệch chuẩn.

+ Cách tính Avg Std :

,

.

76

Prufer Netkey Encoding

Dữ liệu Lai gép Best known

Best % Avg Gens Std Time Best % Avg Gens Std Time Berry6 One Point 534 534 0 534.0 22 0 0.0 534 0 534.0 23 0 0.0 Berry35 One Point 16915 31903 88.8 46157.7 955 10205.8 74,5 30721 81.6 43731.8 1110 10283 111 Palmer6 One Point 693180 693180 0 693180.0 72.5 0 0.1 693180 0 693180.0 42 0 0.1 Palmer12 One Point 3428509 3428509 0 361624.4 280 206419.4 1.1 3428509 0 3521390.7 295 94988.4 3.1 Palmer24 One Point 1086656 1091172 0.4 1278584.1 890 102927 19.3 1128956 3.9 1351709.5 1430 185256.2 52

Raidl10 One Point 53674 53674 0 59354.5 210 8264.1 0.6 53674 0 56603 250 6038.5 1.2 Raidl20 One Point 157570 227626 44.5 337657.8 460 56666.2 7 180917 14.8 283385.9 990 55557.6 17.3 Raidl50 One Point 806864 2334487 189.3 2931802.8 1050 400448.2 232.7 1854093 186.2 2795373.5 2910 499058.1 704.2

77

LinkBiased Encoding (LB) NodeBiased Encoding (NB) Dữ liệu Lai gép Best

known

Best % Avg Gens std Time Best % Avg Gens std Time Berry6 One Point 534 534 0 534 10 5 0 534 0 534 10 0 0 Berry35 One Point 16915 16915 0 18009.1 550 790.1 40.1 16915 0 17049.8 405 351.5 26.2 Palmer6 One Point 693180 693180 0 693180 10 0 0 693180 0 693180 10 0 0

Palmer12 One Point 3428509 3428509 0 3485615.8 72 48956.

9 0.3 3428509 0 3428509 33,75 0 0.1

Palmer24 One Point 1086656 1089368 0.25 1251438.2 595 12204

3.5 34.7 1088154 0.1 1173384.9 380 64794 7.6 Raidl10 One Point 53674 53674 0 53674 70 0 0.2 53657 0 53647 10.25 0 0 Raidl20 One Point 157570 157570 0 161275.7 300 3502.6 5.1 157570 0 159860.8 255 3095 3.1

Raidl50 One Point 806864 873686 8.2 952194.8 1035 73833.

7 232.3 813059 0.8 843894.1 840 29075.1 132

78

The Link and Node Biased Encoding(LNB)

Dữ liệu Lai gép Best known (adsbygoogle = window.adsbygoogle || []).push({});

Best % Avg Gens std Time

Berry6 One Point 534 534 0 534 10 0 0

Berry35 One Point 16915 16915 0 17647.9 640 510 51.1 Palmer6 One Point 693180 693180 0 693180 10 0 0.1 Palmer12 One Point 3428509 3428509 0 3478602.2 76 36600.5 0.3 Palmer24 One Point 1086656 1089386 0.25 1209724.9 700 90326.2 19

Raidl10 One Point 53674 53674 0 53674 45 0 0.3 Raidl20 One Point 157570 157570 0 160373.8 330 2847.1 5.5 Raidl50 One Point 806864 856173 6.1 966897.3 1315 71303 286

Bảng 4.4 - Kết quả chạy các bộ test chuẩn sử dụng mã hóa LNB

Từ bảng kết quả trên ta có thể thấy phương pháp biểu diễn cây bằng chuỗi

Prufer là kém hiệu quả nhất trong năm phương pháp mã hóa được sử dụng. Thuật toán GA dùng mã hóa Prufer chỉ tìm được kết quả tối ưu hoặc gần tối ưu trên các bộ test với kích thước nhỏ (B6, P6, P12, P24 và R10). Trong khi đó phương pháp mã hóa NB cho thấy là phương pháp mã hóa hiệu quả nhất với thuật toán, vì nó tìm được kết quả tối ưu trên phần lớn các bộ test cũng như thời gian thực hiện. Một trong những lý do có thể

giải thích cho hiệu quả vượt trội so của chúng với các phương pháp mã hóa khác là nó có xu hướng tạo ra các cây khung dạng cây MST, mà trong bài toán OCST thì cây khung tối ưu thường có dạng là gần với cây MST và cây hình sao.

79

Phương pháp mã hóa LNB, là sự kết hợp của phương pháp mã hóa NB và LB

trong thuật toán lại cho kết quả không tốt hơn kết quả của thuật toán sử dụng các phương pháp mã hóa NB nhưng nó có kết quả tốt hơn phương LB.

Một phần của tài liệu Đánh giá hiệu quả của giải thuật di truyền giải bài toán cây khung truyền thông tối ưu với các kỹ thuật mã hóa cây (Trang 67)